﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TakbisBilgiSorgu_v1.wsUygulamaYetkiServis;
using TakbisBilgiSorgu_v1.wsUygulamaTakbisServis;
using System.Configuration;
using System.Text;

namespace TakbisBilgiSorgu_v1
{
    public partial class OrganizasyonIslemleri : System.Web.UI.Page
    {
        UygulamaYetkiServis uygulamaYetkiServis = new UygulamaYetkiServis();
        UygulamaTakbisServis uygulamaTakbisServis = new UygulamaTakbisServis();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (((Kullanici)Session["kullanici"]) == null)
                    {
                        MesajVer(ConfigurationManager.AppSettings["GirisYapmalisinizMesaji"].ToString());
                        Response.Redirect("Login.aspx");
                    }
                    else
                    {
                        if (!uygulamaYetkiServis.GrupYetkiVarMiKontrolYeni(((Kullanici)Session["kullanici"]).GrupID, "SFOrganizasyonIslemleri.aspx") || ((Kullanici)Session["kullanici"]).AktifMi != 1)
                        {
                            MesajVer(ConfigurationManager.AppSettings["YetkinizYokMesaji"].ToString());
                            Response.Redirect("AnaSayfa.aspx");
                        }
                        else
                        {
                            divGetirOrganizasyonBilgiIDDen.Visible = false;
                            divgvOrganizasyon.Visible = false;
                            divgvTasinmaz.Visible = false;
                            Session["TasinmazTapuBolumDurum"] = TapuBolumDurum.Aktif;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void gvOrganizasyon_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["organizasyonBilgiList"] != null)
                {
                    gvOrganizasyon.PageIndex = e.NewPageIndex;
                    gvOrganizasyon.DataSource = ViewState["organizasyonBilgiList"];
                }
                else
                    gvOrganizasyon.DataSource = null;
                gvOrganizasyon.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvOrganizasyon_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void SatirIsaretle(GridViewRowEventArgs e)
        {
            try
            {
                //mouse gridin üzerine geldiğinde satırlar işaretlensin diye yaptım
                if (e.Row.RowType != DataControlRowType.DataRow)
                    return;
                // eger yaratilan satir farkliysa data satirindan buradan cik 
                e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#F0FFFF'");
                // mouse overina bu stil attribute'ini ekle 
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
                // mouse out ise eski stile don
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnOrganizasyonExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvOrganizasyon.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.OrganizasyonExceleYaz(((List<OrganizasyonBilgi>)Session["organizasyonBilgiList"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                    Response.End();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void gvOrganizasyon_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (gvOrganizasyon.Rows.Count > 1)
                {
                    foreach (GridViewRow row in gvOrganizasyon.Rows)
                    {
                        if (row.RowIndex == gvOrganizasyon.SelectedIndex)
                            row.ToolTip = string.Empty;
                        else
                        {
                            Session["SecilenOrganizasyonID"] = null;
                            Session["SecilenOrganizasyonBilgi"] = ((List<OrganizasyonBilgi>)Session["organizasyonBilgiList"]).Where(o => o.OrganizasyonBilgiID == Convert.ToDecimal(gvOrganizasyon.DataKeys[gvOrganizasyon.SelectedIndex].Values[0])).ToList()[0];
                        }
                    }
                }
                else
                {
                    Session["SecilenOrganizasyonID"] = null;
                    Session["SecilenOrganizasyonBilgi"] = ((List<OrganizasyonBilgi>)Session["organizasyonBilgiList"]).Where(o => o.OrganizasyonBilgiID == Convert.ToDecimal(gvOrganizasyon.DataKeys[gvOrganizasyon.SelectedIndex].Values[0])).ToList()[0];
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvOrganizasyon_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvOrganizasyon, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnTasinmazGetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["SecilenOrganizasyonBilgi"] != null )
                {
                    if (Session["TasinmazTapuBolumDurum"] != null)
                    {
                        Session["secilenOrganizasyonTasinmazlari"] = new List<Tasinmaz>();
                        Session["secilenOrganizasyonTasinmazlari"] = uygulamaTakbisServis.GetirMalikTasinmazTasinmazTipten(MalikTip.Organizasyon, TasinmazTip.Hepsi, ((OrganizasyonBilgi)Session["SecilenOrganizasyonBilgi"]).OrganizasyonBilgiID, (TapuBolumDurum)Session["TasinmazTapuBolumDurum"], ((Kullanici)Session["kullanici"]).ID).ToList();
                        if (Session["secilenOrganizasyonTasinmazlari"] == null || ((List<Tasinmaz>)Session["secilenOrganizasyonTasinmazlari"]).Count == 0)
                            MesajVer("Seçilen Organizasyona Bağlı Taşınmaz Bulunmamaktadır.");
                        else
                        {
                            ViewState["secilenOrganizasyonTasinmazlari"] = (List<Tasinmaz>)Session["secilenOrganizasyonTasinmazlari"];
                            gvTasinmaz.DataSource = (List<Tasinmaz>)Session["secilenOrganizasyonTasinmazlari"];
                            gvTasinmaz.DataBind();
                            divgvTasinmaz.Visible = true;
                        }
                    }
                    else
                        MesajVer("Taşınmaz Tapu Bölüm Durumu Seçip Lütfen Tekrar Deneyiniz.");
                }
                else
                    MesajVer("Organizasyon Seçip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void rbTasinmazAktif_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbTasinmazAktif.Checked == true)
                {
                    rbTasinmazPasif.Checked = false;
                    rbTasinmazHepsi.Checked = false;
                    Session["TasinmazTapuBolumDurum"] = TapuBolumDurum.Aktif;
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void rbTasinmazPasif_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbTasinmazPasif.Checked == true)
                {
                    rbTasinmazAktif.Checked = false;
                    rbTasinmazHepsi.Checked = false;
                    Session["TasinmazTapuBolumDurum"] = TapuBolumDurum.Pasif;
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void rbTasinmazHepsi_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbTasinmazHepsi.Checked == true)
                {
                    rbTasinmazAktif.Checked = false;
                    rbTasinmazPasif.Checked = false;
                    Session["TasinmazTapuBolumDurum"] = TapuBolumDurum.Hepsi;
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvTasinmaz_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["secilenOrganizasyonTasinmazlari"] != null)
                {
                    gvTasinmaz.PageIndex = e.NewPageIndex;
                    gvTasinmaz.DataSource = ViewState["secilenOrganizasyonTasinmazlari"];
                }
                else
                    gvTasinmaz.DataSource = null;
                gvTasinmaz.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvTasinmaz_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvTasinmaz_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "TapuBolumDurum")) == "Pasif")
                    e.Row.ForeColor = System.Drawing.Color.Red;
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvTasinmaz, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnOrganiasyonExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvTasinmaz.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.TasinmazExceleYaz(((List<Tasinmaz>)Session["secilenOrganizasyonTasinmazlari"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                    Response.End();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnGetirOrganizasyonBilgiIDDen_Click(object sender, EventArgs e)
        {
            try
            {
                if (uygulamaYetkiServis.BosDegerMi(txtOrganizasyonID.Text.Trim()) && uygulamaYetkiServis.SqlInjectionControl(txtOrganizasyonID.Text.Trim()))
                {
                    Session["organizasyonBilgiList"] = new List<OrganizasyonBilgi>();
                    ((List<OrganizasyonBilgi>)Session["organizasyonBilgiList"]).Add(uygulamaTakbisServis.GetirOrganizasyonBilgiIDDen(Convert.ToInt16(txtOrganizasyonID.Text.Trim()), ((Kullanici)Session["kullanici"]).ID));
                    if (Session["organizasyonBilgiList"] != null && ((List<OrganizasyonBilgi>)Session["organizasyonBilgiList"]).Count != 0)
                    {
                        ViewState["organizasyonBilgiList"] = Session["organizasyonBilgiList"];
                        gvOrganizasyon.DataSource = Session["organizasyonBilgiList"];
                        gvOrganizasyon.DataBind();
                        divgvOrganizasyon.Visible = true;
                    }
                    else
                        MesajVer("Organizasyon Getirilemedi.");
                }
                else
                    MesajVer("Sorgulama Kriterlerini Kontrol Edip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnTumOrganizasyonlariGetir_Click(object sender, EventArgs e)
        {
            try
            {
                OrganizasyonBilgi[] organizasyonBilgiArray = uygulamaTakbisServis.GetirOrganizasyonBilgiTum(((Kullanici)Session["kullanici"]).ID);
                if (organizasyonBilgiArray != null)
                {
                    Session["organizasyonBilgiList"] = organizasyonBilgiArray.ToList();
                    divGetirOrganizasyonBilgiIDDen.Visible = false;
                    divgvOrganizasyon.Visible = false;
                    divgvTasinmaz.Visible = false;
                    ViewState["organizasyonBilgiList"] = Session["organizasyonBilgiList"];
                    gvOrganizasyon.DataSource = Session["organizasyonBilgiList"];
                    gvOrganizasyon.DataBind();
                    divgvOrganizasyon.Visible = true;
                    divOrganizasyonSorguKriter.Visible = false;
                }
                else
                {
                    Session["organizasyonBilgiList"] = null;
                    MesajVer("Ülkeler Getirilemedi.");
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnIDdenOrganizasyonGetir_Click(object sender, EventArgs e)
        {
            try
            {
                divGetirOrganizasyonBilgiIDDen.Visible = true;
                divgvOrganizasyon.Visible = false;
                divgvTasinmaz.Visible = false;
                divOrganizasyonSorguKriter.Visible = false;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void MesajVer(string mesaj)
        {
            ClientScript.RegisterStartupScript(this.GetType(), " Uyarı.. ", "ShowPopup('" + mesaj + "');", true);
        }

        protected void SorguTiplerineGit()
        {
            try
            {
                divGetirOrganizasyonBilgiIDDen.Visible = false;
                divgvOrganizasyon.Visible = false;
                divgvTasinmaz.Visible = false;
                divOrganizasyonSorguKriter.Visible = true;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void lnkSorguTiplerineGit_Click(object sender, EventArgs e)
        {
            SorguTiplerineGit();
        }

        protected void lnkSorguTiplerineGit1_Click(object sender, EventArgs e)
        {
            SorguTiplerineGit();
        }
    }
}
